package tpgrandt;



import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.EventListener;
import java.util.Vector;

import javax.swing.ComboBoxModel;
import javax.swing.ListModel;
import javax.swing.event.ListDataListener;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;

//import com.mysql.jdbc.ResultSetMetaData;

public class ResultSetModel implements TableModel, ListModel, ComboBoxModel {

	protected Vector<Object[]> datos;
	protected Vector<String> nombreColumnas;
	protected Vector<EventListener> suscriptores;
	protected int seleccion = 0;
	protected int columnas;
		
	public ResultSetModel(/*ResultSet rs*/) throws SQLException {
		suscriptores = new Vector<EventListener>();
		datos = new Vector<Object[]>();
		nombreColumnas = new Vector<String>();

		//ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();
		columnas = 4; //columnas = rsmd.getColumnCount();

		nombreColumnas.add("Equipo");
		nombreColumnas.add("Puesto");
		nombreColumnas.add("Nombre y Apellido");
		nombreColumnas.add("Nº camiseta");

		Object[] objeto = new Object[columnas];
		for (Integer i = 0; i < columnas; i++) {
			objeto[i] = "objeto " + i.toString();
		}
		datos.add(objeto);

		objeto = new Object[columnas];
		for (Integer i = 0; i < columnas; i++) {
			objeto[i] = "objeto " + i.toString();
		}
		datos.add(objeto);
		/*
		for (int i = 1; i <= columnas; i++)
			nombreColumnas.add(rsmd.getColumnName(i));
		
		while (rs.next()) {
			Object[] objeto = new Object[columnas];
			for (int i = 0; i < columnas; i++) {
				objeto[i] = rs.getObject(i + 1);
			}
			datos.add(objeto);
		}
		*/
	}

	@Override
	public void addTableModelListener(TableModelListener arg0) {
		suscriptores.add(arg0);
	}

	@Override
	public Class<?> getColumnClass(int arg0) {
		return Object.class;
	}

	@Override
	public int getColumnCount() {
		return columnas;
	}

	@Override
	public String getColumnName(int arg0) {
		return nombreColumnas.elementAt(arg0);
	}

	@Override
	public int getRowCount() {
		return datos.size();
	}

	@Override
	public Object getValueAt(int arg0, int arg1) {
		return datos.elementAt(arg0)[arg1];
	}

	@Override
	public boolean isCellEditable(int arg0, int arg1) {
		return false;
	}

	@Override
	public void removeTableModelListener(TableModelListener arg0) {
		suscriptores.remove(arg0);
	}

	@Override
	public void setValueAt(Object arg0, int arg1, int arg2) {
		
	}

	@Override
	public void addListDataListener(ListDataListener arg0) {
		suscriptores.add(arg0);
	}

	@Override
	public Object getElementAt(int arg0) {
		if (columnas == 1) return datos.elementAt(arg0);
		
		String cadena = " | ";
		for (int i = 0; i < datos.elementAt(arg0).length; i++)
			cadena += datos.elementAt(arg0)[i].toString() + " | ";
		return cadena;
	}

	@Override
	public int getSize() {
		return datos.size();
	}

	@Override
	public void removeListDataListener(ListDataListener arg0) {
		suscriptores.remove(arg0);
	}

	public void setSelectedItem(Object arg0) {
		seleccion = datos.indexOf(arg0);
	}

	public Object getSelectedItem() {
		return datos.elementAt(seleccion).toString();
	}

}
